package br.com.simon.controller;

import java.util.List;

import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Put;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.view.Results;
import br.com.simon.dao.QuestaoDao;
import br.com.simon.dao.SimuladoDao;
import br.com.simon.modelo.Questao;
import br.com.simon.modelo.Restrito;
import br.com.simon.modelo.Simulado;

@Resource
public class SimuladoController {
	private final SimuladoDao simuladoDao;
	private final Result result;
	private final Validator validator;
	private final QuestaoDao questaoDao;

	public SimuladoController(SimuladoDao simuladoDao, Result result,
			Validator validator, QuestaoDao questaoDao) {
		this.simuladoDao = simuladoDao;
		this.result = result;
		this.validator = validator;
		this.questaoDao = questaoDao;
	}
	
	

	@Get("/simulado/lista")
	public void lista() {
		String mensagem = "teste";
		result.include("key", mensagem);
		result.include("simuladosList", simuladoDao.listaTudo());
	}

	@Restrito
	@Post("/simulado")
	public void adiciona(Simulado simulado) {
		validaFormulario(simulado);
		simuladoDao.salva(simulado);
		result.redirectTo(this).lista();
	}
	

	@Restrito
	@Get("/simulado/novo")
	public void formulario() {
	}

	@Restrito
	@Get("/simulado/{id}")
	public Simulado edita(int id) {
		return simuladoDao.getSimulado(id);
	}

	@Restrito
	@Put("/simulado/{simulado.id}")
	public void altera(Simulado simulado) {

		validaFormulario(simulado);

		simuladoDao.atualiza(simulado);
		result.redirectTo(this).lista();
	}


	@Get("/simulado/busca.json")
	public void buscaJson(String q) {
		result.use(Results.json()).withoutRoot().from(simuladoDao.busca(q))
				.exclude("id").serialize();
	}

	@Get("/simulado/busca")
	public List<Simulado> busca(String id) {
		result.include("id", id);
		return simuladoDao.busca(id);
	}

	private void validaFormulario(Simulado simulado) {
		validator.validate(simulado);
		validator.onErrorUsePageOf(this).formulario();
	}
	
	@Restrito
	@Delete("/simulado/{id}")
	public void remove(int id) {
		Simulado simulado = simuladoDao.getSimulado(id);
		simuladoDao.remove(simulado);
		result.redirectTo(this).lista();
	}

	@Get("/simulado/remove")
	public void remove() {
		String mensagem = "teste";
		result.include("key", mensagem);
		result.include("simuladoList", simuladoDao.listaTudo());
	}
	public void adicionaQuestao(int id){
		Questao questao = questaoDao.getQuestao(id);
		Simulado simulado = new Simulado();
		if(simulado.getIdQuestao() == questao.getId()){
			
		}
		
	}
}



